#ifndef MUSIC_H
#define MUSIC_H

#include<QString>
#include<QUrl>
#include<QMediaPlayer>
#include <QMediaMetaData>  // 关键：包含 QMediaMetaData 的完整定义


class Music
{
public:
    Music();

public:
    Music(const QUrl& url);
    void setIsLike(bool isLike);
    void setIsHistory(bool isHistory);
    void setMusicName(const QString& musicName);
    void setSingerName(const QString& singerName);
    void setAlbumName(const QString& albumName);
    void setDuration(const qint64 duration);
    void setMusicUrl(const QUrl& url);
    void setMusicId(const QString& musicId);

    bool getIsLike()const;
    bool getIsHistory()const;
    QString getMusicName()const;
    QString getSingerName()const;
    QString getAlbumName()const;
    qint64 getDuration()const;
    QUrl getMusicUrl()const;
    QString getMusicId()const;

    QString getLrcFilePath()const;

private:
    void parseMediaMetaData();

private:
    bool _isLike; // 标记⾳乐是否为我喜欢
    bool _isHistory; // 标记⾳乐是否播放过

    QString _musicName;
    QString _singerName;
    QString _albumName;
    qint64 _duration; // ⾳乐的持续时⻓，即播放总的时⻓

    // 为了标记歌曲的唯⼀性，给歌曲设置id
    // 磁盘上的歌曲⽂件经常删除或者修改位置，导致播放时找不到⽂件，或者重复添加
    // 此处⽤musicId来维护播放列表中⾳乐的唯⼀性
    QString _musicId;

    QUrl _musicUrl; // ⾳乐在磁盘中的位置

};

#endif // MUSIC_H
